package com.ruoyi.user.service.impl;

import java.util.List;

import com.alibaba.fastjson2.JSON;
import com.ruoyi.order.api.util.RedisChar;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import com.ruoyi.user.mapper.CheCarMapper;
import com.ruoyi.user.api.domain.CheCar;
import com.ruoyi.user.service.ICheCarService;

/**
 * 车辆管理Service业务层处理
 *
 * @author ruoyi
 * @date 2025-01-03
 */
@Service
public class CheCarServiceImpl implements ICheCarService
{
    @Autowired
    private CheCarMapper cheCarMapper;
    @Autowired(required = false)
    private RedisTemplate<Object,Object> redisTemplate;

    /**
     * 查询车辆管理
     *
     * @param id 车辆管理主键
     * @return 车辆管理
     */
    @Override
    public CheCar selectCheCarById(Long id)
    {
        if(redisTemplate != null){
            Object o = redisTemplate.opsForValue().get(RedisChar.CAR_PREFIX + id);
            if(o != null){
                CheCar cheCar = JSON.parseObject(JSON.toJSON(o).toString(), CheCar.class) ;
                if(cheCar != null){
                    return cheCar;
                }
            }else{
//                添加缓存
                CheCar car = cheCarMapper.selectCheCarById(id);
                redisTemplate.opsForValue().set(RedisChar.CAR_PREFIX + id, car);
                return car;
            }
        }

        return cheCarMapper.selectCheCarById(id);
    }

    @Override
    public List<CheCar> findByIdIn(Long[] idList) {
        return cheCarMapper.findByIdIn(idList);
    }

    /**
     * 查询车辆管理列表
     *
     * @param cheCar 车辆管理
     * @return 车辆管理
     */
    @Override
    public List<CheCar> selectCheCarList(CheCar cheCar)
    {
        return cheCarMapper.selectCheCarList(cheCar);
    }

    /**
     * 新增车辆管理
     *
     * @param cheCar 车辆管理
     * @return 结果
     */
    @Override
    public int insertCheCar(CheCar cheCar)
    {
        return cheCarMapper.insertCheCar(cheCar);
    }

    /**
     * 修改车辆管理
     *
     * @param cheCar 车辆管理
     * @return 结果
     */
    @Override
    public int updateCheCar(CheCar cheCar)
    {
        if(redisTemplate!= null){
            redisTemplate.delete(RedisChar.CAR_PREFIX+cheCar.getId());
        }
        return cheCarMapper.updateCheCar(cheCar);
    }

    /**
     * 批量删除车辆管理
     *
     * @param ids 需要删除的车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCheCarByIds(Long[] ids)
    {
        if(redisTemplate != null){
            for (Long id : ids) {
                redisTemplate.delete(RedisChar.CAR_PREFIX+id);
            }
        }

        return cheCarMapper.deleteCheCarByIds(ids);
    }

    /**
     * 删除车辆管理信息
     *
     * @param id 车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCheCarById(Long id)
    {
        if(redisTemplate != null){
            redisTemplate.delete(RedisChar.CAR_PREFIX+id);
        }
        return cheCarMapper.deleteCheCarById(id);
    }

    @Override
    public CheCar findBychepai(String chepai) {
        return cheCarMapper.findBychepai(chepai);
    }
}
